package main

/*
* Content: null interface(空接口)、类型断言、map[string]interface{}
* --------------------------------------------------
* Go语言基础19 接口interface: https://www.bilibili.com/video/BV1Gt411F7uE
 */

import "fmt"

func MyInterfaceNullInterface() {

	// null interface(空接口)
	fmt.Println("--------------------null interface(空接口)--------------------")

	// interface{} 可以存储任意类型的值
	var xx interface{}
	xx = "hello"
	fmt.Printf("interface{}存储的值: %v\n", xx)

	xx = "谢清照"
	fmt.Printf("interface{}存储的值: %v\n", xx)

	// 类型断言
	fmt.Println("--------------------类型断言--------------------")
	// 判断 xx 是不是 string 类型。猜的类型不对时, ok=false，ret=string类型的零值

	ret, ok := xx.(string)
	if !ok {
		fmt.Println("不是字符串类型")
	} else {
		fmt.Printf("是字符串类型, ret的值:%v\n", ret)
	}

	// map[string]interface{}
	fmt.Println("--------------------map[string]interface{}--------------------")

	var m = make(map[string]interface{}, 10)
	m["name"] = "谢清照"
	m["age"] = 18
	m["hobby"] = []string{"跳舞", "绘画", "音乐"}
	fmt.Println(m)
}
